    org 100h        ; 告诉编译器程序加载到100H处
    mov ax, cs  ; 设置 DS和ES = CS
    mov ds, ax
    mov es, ax
    mov ss, ax  ; 设置堆栈指针
    mov sp, 100h - 4
    call CLS
    call DispStr    ; 显示字符串
    mov ax,4c00h    ; AH=4Ch（功能号，终止进程）、AL=0（返回代码）
    int 21h         ; DOS软中断

CLS: ; clear the screen
    mov ah, 6           ; 功能号
    mov al, 0           ; 滚动的文本行数（0=整个窗口）
    mov bh,0fh      ; 设置插入空行的字符颜色为黑底亮白字
    mov ch, 0           ; CH=行号、CL=列号
    mov cl, 0           ; 窗口左上角的行列号都为0
    mov dh, 24      ; 窗口右下角的行号，文本屏幕25行，行号=0~24
    mov dl, 79      ; 窗口右下角的列号，文本屏幕80列，列号=0~79
    int 10h          ; 显示中断
    ret

DispStr: ; 显示字符串例程
    mov ah, 13h ; AH=BIOS中断的功能号
    mov al, 01h ; AL=1表示光标放到串尾
    mov bh, 0       ; BH=页号
    mov bl, 0Ch ; BL=颜色（黑底红字）
    mov dh, 24       ; DH=行号
    mov dl, 80 - strlen   ; DL=列号
    mov bp, BootMsg; ES:BP=串地址
    mov cx, strlen; CX=串长
    int 10h         ; 调用10h号中断
    ret             ; 函数返回
BootMsg: ; 显示用的字符串
    db "CXF love OS very much!"
    strlen equ $ - BootMsg ; 定义串长常量